#!/bin/bash
# AKShare 期权数据定时同步服务启动脚本

set -e

# 脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"

# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}=== AKShare 期权数据定时同步服务 ===${NC}"
echo ""

# 检查是否已编译
BINARY="$PROJECT_ROOT/target/release/akoption-scheduler"
if [ ! -f "$BINARY" ]; then
    echo -e "${YELLOW}未找到编译后的二进制文件，开始编译...${NC}"
    cd "$PROJECT_ROOT"
    cargo build --release -p akoption-scheduler
    echo -e "${GREEN}编译完成${NC}"
fi

# 检查配置文件
CONFIG_FILE="$PROJECT_ROOT/config/sync_config.toml"
if [ ! -f "$CONFIG_FILE" ]; then
    echo -e "${RED}错误: 配置文件不存在: $CONFIG_FILE${NC}"
    exit 1
fi

# 创建必要的目录
mkdir -p "$PROJECT_ROOT/data"
mkdir -p "$PROJECT_ROOT/logs"

# 解析命令行参数
RUN_ONCE=false
LOG_LEVEL="info"

while [[ $# -gt 0 ]]; do
    case $1 in
        --run-once)
            RUN_ONCE=true
            shift
            ;;
        --log-level)
            LOG_LEVEL="$2"
            shift 2
            ;;
        --help)
            echo "用法: $0 [选项]"
            echo ""
            echo "选项:"
            echo "  --run-once          执行一次性同步后退出"
            echo "  --log-level LEVEL   设置日志级别 (trace|debug|info|warn|error)"
            echo "  --help              显示此帮助信息"
            exit 0
            ;;
        *)
            echo -e "${RED}未知选项: $1${NC}"
            echo "使用 --help 查看帮助"
            exit 1
            ;;
    esac
done

# 构建命令
CMD="$BINARY --config $CONFIG_FILE --log-level $LOG_LEVEL"

if [ "$RUN_ONCE" = true ]; then
    CMD="$CMD --run-once"
    echo -e "${YELLOW}执行一次性数据同步...${NC}"
else
    echo -e "${GREEN}启动定时任务调度器...${NC}"
fi

echo ""
echo "配置文件: $CONFIG_FILE"
echo "日志级别: $LOG_LEVEL"
echo "数据目录: $PROJECT_ROOT/data"
echo "日志目录: $PROJECT_ROOT/logs"
echo ""

# 运行程序
cd "$PROJECT_ROOT"
exec $CMD
